package com.shortlink.common.interceptor;

import com.shortlink.common.exception.ClientException;
import com.shortlink.utils.UserContext;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import static com.shortlink.common.constants.AppHttpCodeEnum.NEED_LOGIN;

public class LoginInterceptor implements HandlerInterceptor {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        // 1.判断是否需要拦截（UserContext中是否有用户）
        if (UserContext.getUser() == null) {
            // 没有，需要拦截，设置状态码
            response.setStatus(NEED_LOGIN.getCode());
            // 拦截
            throw new ClientException(NEED_LOGIN);
        }
        // 有用户，则放行
        return true;
    }
}
